package com.java2007.zhangyu.restaurant.utils;

import com.alibaba.druid.util.StringUtils;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.Part;
import java.io.File;

/**
 * 文件上传工具类
 * @author zy
 * @Version
 * @date 2021/01/28
 */
public class FileUtil {
    /**
     * 上传文件
     * @param request
     * @throws Exception
     */
    public static String upload(HttpServletRequest request) {
        //文件上传
        try {
            //获取图片
            Part part = request.getPart("fImage");
            //获取真正的文件名
            String filename = part.getSubmittedFileName();
            if(StringUtils.isEmpty(filename)){
                filename = request.getParameter("img");
                return filename;
            } else{
                //获取文件后缀(例： .jpg)
                String suffixName = filename.substring(filename.lastIndexOf("."));
                //获取files目录在服务器中的真实路径【某个具体路径下的目录】
                String imagePath = request.getSession().getServletContext().getRealPath("/files/");
                //得到一个随机的文件名(例： uuid.jpg)
                String fileName = UUIDUtil.getFileName(suffixName);
                File file = new File(imagePath, fileName);
                //判断父目录是否存在，若不存在，创建父目录
                if(!file.getParentFile().exists()) {
                    file.getParentFile().mkdirs();
                }
                part.write(file.getPath());
                fileName = "/files/" + fileName;
                return fileName;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}
